package cn.bugDance.domain.activity.service.quota;

import cn.bugDance.domain.activity.model.entity.ActivityAccountEntity;
import cn.bugDance.domain.activity.model.entity.ActivitySkuEntity;
import cn.bugDance.domain.activity.model.entity.DeliverOrderEntity;
import cn.bugDance.domain.activity.model.valobj.ActivitySkuStockSubtractionJobData;

import java.util.List;

public interface IRaffleActivityQuotaService {

    ActivitySkuStockSubtractionJobData takeJobQueue(Long sku);

    void activitySkuStockSubtractQuota(Long sku);

    Integer queryUserDayCount(String userId, Long activityId);

    Integer queryUserTotalCountSurplus(String userId, Long activityId);

    Integer queryUserMonthCountSurplus(String userId, Long activityId, String month);

    Integer queryUserDayCountSurplus(String userId, Long activityId, String day);

    Integer queryRaffleActivityAccountPartakeCount(String userId, Long activityId);

    ActivityAccountEntity queryActivityAccount(String userId, Long activityId);

    List<Long> queryActivitySkuList();

    void clearActivitySkuJobQueue(Long sku);

    void updateActivitySkuStockOver(Long sku);

    void updateCreditPayOrder(DeliverOrderEntity deliverOrderEntity);

    List<ActivitySkuEntity> queryRechargeSku(Long activityId);

    ActivitySkuEntity queryActivitySku(Long sku);
}
